<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>宏任务微任务</title>
    <script src="https://cdn.bootcss.com/jquery/1.9.1/jquery.min.js"></script>

</head>

<body>
    <div class="container">

    </div>
    <script>
        let p1 = $('<p>11111</p>');// 创建了一个p标签，内容是 1111
        let p2 = $('<p>22222</p>');
        let p3 = $('<p>33333</p>');
        $('.container')
            .append(p1)
            .append(p2)
            .append(p3)

        console.log('length: ', $('.container').children().length);
        // alert('本次call stack执行栈已结束，dom已经更新，但尚未渲染');

        Promise.resolve().then(value => {
            // 说明微任务的执行时机是在DOM渲染之前
            console.log('length: ', $('.container').children().length);
            alert('微任务');
        })
        setTimeout(() => {
            // 说明宏任务在DOM渲染结束之后，执行的
            console.log('length: ', $('.container').children().length);
            alert('宏任务');
        })


        // 执行顺序
        // 1. 首先执行 同步代码
        // 2. 清空微任务队列
        // 3. 执行DOM渲染
        // 4. 执行一个宏任务

    </script>
</body>

</html>